Modern computing systems can be found in many forms including, for example, mainframes, minicomputers, workstations, servers, personal computers, internet terminals, notebooks and embedded systems. A typical computer system includes a processor, associated memory and control logic (typically on a system board) and a number of peripheral devices that provide input and/or output (I/O) for the system. Computer system boards often receive expansion printed circuit boards to increase the capabilities of the computer system and to connect to peripheral devices through an expansion bus.
In general, computer systems include multiple extension slots on a communication bus to provide access to external peripheral devices using add-in cards. The add-in cards expand the functionality of the computer system and can be, for example, a network interface card, a graphics card, storage controllers or the like. The architecture and functioning of the communication bus and interfaces are often standardized throughout the computer industry to allow multiple equipment vendors to provide external peripheral devices for the computer systems. One such standard is the PCI Hot-Plug Specification, Rev. 1.0 and 1.1 defined by PCI Special Interest Group and incorporated herein by reference in its entirety. The PCI Hot-Plug specification defines some of the key aspects of a process of inserting and removing add-in cards in the extension slots of a PCI bus in a computer system while the computer system is running.
The PCI Hot-Plug specification describes a hardware platform such as a computer system that may accept a hot-plug event such as an insertion or removal of an add-in card without rebooting the computer system. Typically, the hot-plug events are controlled by a hot-plug controller in the computer system. A hot-plug event driver in the computer system processes the hot-plug events for the hot-plug controller. The PCI Special Interest Group has also defined a standard for the hot-plug controllers in the PCI Standard Hot-Plug Controller and Subsystem Specification Rev. 1.0 (hereinafter referred to as the “controller specification”) which is also incorporated herein by reference in its entirety. The controller specification defines the general interface of hot-plug events with the hardware platform.
One of the key aspects of on-line hot-plugging of devices into a computer system is to analyze the impact of such an operation on the system. Such an analysis is especially important if hot plugging removes a device or makes a group of devices unavailable to the computer system. This operation is referred to as Critical Resource Analysis (CRA).